/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package semac.control;

import java.io.IOException;
import java.sql.*;
import java.util.*;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import semac.entidades.AnioLectivo;
import semac.entidades.Cuenta;

/**
 *
 * @author Trinity
 */
public class CtrlAnioLectivos {

    private ArrayList<AnioLectivo> aniosLectivos;
    private AnioLectivo anioLectivo;
    private CtrlAlumnos manejadorAlumnos;
    private Conexion conexion;
    private ResultSet resultado;
    private String query;
    private HttpServletRequest request;

    public CtrlAnioLectivos() throws IOException, ParserConfigurationException, SAXException {
        aniosLectivos = new ArrayList();
        anioLectivo = new AnioLectivo();
        request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String urlFile =  request.getRealPath("/")+ "/WEB-INF/dataBase.xml";
        conexion =  new Conexion(urlFile);
    }

//este método cambia el estado de vigencia del anio lectivo,
    public void culminarAnioLectivo(Cuenta cuenta) throws ClassNotFoundException, SQLException {
        GregorianCalendar fecha = new GregorianCalendar();

        query = "SELECT * "
                +"FROM semac.AnioLectivo "
                +"WHERE semac.AnioLectivo.estadoVigencia_AnioLectivo='1'";

        conexion.startConnection();
        resultado = conexion.execute(query);
        resultado.next();

        anioLectivo.setCodigo(resultado.getInt("codigo_AnioLectivo"));
        anioLectivo.setAnio(resultado.getInt("anio_AnioLectivo"));
        anioLectivo.setEstadoPeriodoMatricula(0);
        anioLectivo.setEstadoVigencia(0);
        anioLectivo.setFechaModificacion(fecha);
        anioLectivo.setUltimoAcceso(cuenta.getCodigo());

        conexion.closeConnection();
        updateAnioLectivo(anioLectivo);
    }

    public void updateAnioLectivo(AnioLectivo c) throws ClassNotFoundException, SQLException {
        query = "UPDATE semac.aniolectivo SET"
                + "semac.aniolectivo.anio_aniolectivo = '" + c.getAnio() + "', "
                + "semac.aniolectivo.estadovigencia_aniolectivo = '" + c.getEstadoVigencia() + "', "
                + "semac.aniolectivo.estadoperiodomatricula_aniolectivo = '" + c.getEstadoPeriodoMatricula() + "', "
                + "semac.aniolectivo.fechacreacion_aniolectivo = '"
                + c.getFechaCreacion().getTime().getDate() + "/"
                + (c.getFechaCreacion().getTime().getMonth() + 1) + "/"
                + (c.getFechaCreacion().getTime().getYear() + 1900) + "', "
                + "semac.aniolectivo.fechamodificacion_aniolectivo = '"
                + c.getFechaModificacion().getTime().getDate() + "/"
                + (c.getFechaModificacion().getTime().getMonth() + 1)
                + "/" + (c.getFechaModificacion().getTime().getYear() + 1900) + "', "
                + "semac.aniolectivo.codigo_cuenta = " + c.getUltimoAcceso()
                +"WHERE semac.aniolectivo.codigo_aniolectivo = " +c.getCodigo();

        conexion.startConnection();
        resultado = conexion.execute(query);
        resultado.next();
        conexion.closeConnection();
    }

    public int insertAnioLectivo(AnioLectivo c) throws ClassNotFoundException, SQLException {
        query = "INSERT INTO semac.aniolectivo "
                +"(semac.aniolectivo.anio_aniolectivo,"
                + "semac.aniolectivo.estadovigencia_aniolectivo, "
                + "semac.aniolectivo.estadoperiodomatricula_aniolectivo, "
                + "semac.aniolectivo.fechacreacion_aniolectivo, "
                + "semac.aniolectivo.fechamodificacion_aniolectivo, "
                + "semac.aniolectivo.codigo_cuenta) "
                +"VALUES ('"
                + c.getAnio() + "',"
                + "'" + c.getEstadoVigencia() + "',"
                + "'" + c.getEstadoPeriodoMatricula() + "',"
                + "'" + c.getFechaCreacion().getTime().getDate() + "/"
                + (c.getFechaCreacion().getTime().getMonth() + 1) + "/"
                + (c.getFechaCreacion().getTime().getYear() + 1900) + "',"
                + "'" + c.getFechaModificacion().getTime().getDate() + "/"
                + (c.getFechaModificacion().getTime().getMonth() + 1) + "/"
                + (c.getFechaModificacion().getTime().getYear() + 1900) + "',"
                + c.getUltimoAcceso();

        conexion.startConnection();
        resultado = conexion.execute(query);
        resultado.next();
        conexion.closeConnection();
        return 0;
    }

//se establece el periodo de matrícula de un año lectivo como habilitado o deshabilitado
    public void habilitarPeriodoMatricula(int codigoAnioLectivo, int estadoPeriodoMatricula) throws ClassNotFoundException, SQLException {
        query = "UPDATE semac.aniolectivo SET"
                + "semac.aniolectivo.estadoperiodomatricula_aniolectivo = '" + estadoPeriodoMatricula + "' "
                +"WHERE semac.aniolectivo.codigo_aniolectivo = " +codigoAnioLectivo;

        conexion.startConnection();
        resultado = conexion.execute(query);
        resultado.next();
        conexion.closeConnection();
    }

//Obtiene el anio lectivo activo
    public int getAnioLectivoActivo() throws ClassNotFoundException, SQLException {
        int anio=0;
        query = "SELECT semac.AnioLectivo.anio_AnioLectivo "
                +"FROM semac.AnioLectivo "
                +"WHERE semac.AnioLectivo.estadoVigencia_AnioLectivo='1'";

        conexion.startConnection();
        resultado = conexion.execute(query);
        resultado.next();
        anio = resultado.getInt("anio_AnioLectivo");
        conexion.closeConnection();

        return anio;
    }
}
